#include "session.h"
#include "sessionmanager.h"
#include "../util/util.h"

namespace QinChat{
    namespace Net{

        // uint CSessionManager::MAX_SESSION ;

        CSessionManager::CSessionManager(){
            Init();
        }

        CSessionManager::~CSessionManager(){
            Clear();
        }

        void  CSessionManager::Init(void){
           
        }

        void CSessionManager::Clear(void){
            m_hashSession.Clear();
        }

        bool CSessionManager::Push(std::shared_ptr<CSession> pSession){
            if (nullptr == pSession){
                return false;
            }
            return m_hashSession.Push(Int2String(pSession->GetFd()), pSession);
        }

        std::shared_ptr<CSession> CSessionManager::Find(int fd) const{
            if (fd < 0){
                return nullptr;
            }

            std::shared_ptr<CSession> pSession = nullptr;
            if (m_hashSession.Find(Int2String(fd), pSession)){
                return pSession;
            }
            return nullptr;
        }

        bool CSessionManager::Remove(int fd){
            if (fd < 0){
                return false;
            }

            std::shared_ptr<CSession> pSession = nullptr;
            return m_hashSession.Find(Int2String(fd), pSession);
        }
    }
}